<?php

namespace Game\Helper;

class Utils
{
    /**
     * Cria uma entidade apartir
     * @param $dados Array Rece um array com os dados pra criar a entidade
     * @param $entity Object/Namespace Entidade a qual sera transfroamda
     */
    public static function createEntity(array $dados, $entity)
    {
        if( is_null(entity) || empty($dados) )
            return false;

        $retorno = NULL;
        if( $entity instanceof Object ) {
            $retorno self::copyToEntity($dados, $entity);
        }
        else {
            $retorno self::copyToEntity($dados, new $entity());
        }

        return $retorno;
    }

    private static function copyToEntity($from, $to) {
        foreach ($from as $key => $value) {
            if ($to instanceof ArrayAccess && $to->offsetExists($key)) {
                $to->offsetSet($key, $value);
            } else if (property_exists($to, $key)) {
                $to->$key = $value;
            }
        }

        return $to;
    }
}
